Advanced SMB2J hacking
By Insectduel
This is the place where you find the hex offsets in Super Mario Bros. 2J for the FDS. Because I knew almost all the data in that game, I decided to share some of the data I’ve collected. This is more advanced than the Hex Offset List section.
The Hex Editor like Transhexlation is required to do this. DO NOT FORGET the Disksys.rom in the same folder as the emulator is because this is how to play FDS games.
Background Palette Offsets
Starting Offset 9949=0x26DD Underwater Palette 22
Starting Offset 9950=0x26DE Ground Palette 22
Starting Offset 9951=0x26DF Underground 0F
Starting Offset 9952=0x26E0 Castle 0F
Starting Offset 9953=0x26E1 Night 0F
Starting Offset 9954=0x26E2 Snow 22
Starting Offset 9955=0x26E3 Night and Snow 0F
Starting Offset 9956=0x26E4 Mario on Screen 0F
I recommend the NES Palette Editor for this. Click on all files and choose a SMB2J ROM for it.
Hex Changed Offsets
27 Yellow
25 Fuchsia
22 Light Blue
16 Red
00 Gray
FF Dark Blue
Shining Animation
10831=0x2A4F
Original Offset 27 27
Shining Animation
10834=0x2A52
Original Offset 07 17
Surface and Celing TSA TileEditor
Hex Starting Offset 13207=0x3397
6A – Sea Tile
Hex Starting Offset 13208=0x3398
6B – Dirt Tile
Hex Starting Offset 13209=0x3399
50 – Vertical Bricks
Hex Starting Offset 13210=0x339A
63 – Castle Tile
Brickery Offsets
Hex Starting Offset 13211=0x339B
00 00 – None
Hex Starting Offset 13213=0x339D
00 18 – Surface
Hex Starting Offset 13215=0x339F
01 18 – Surface and Ceiling
Hex Starting Offset 13217=0x33A1
07 18 – Surface and Ceiling 3
Hex Starting Offset 13219=0x33A3
0F 18 – Surface and Ceiling 4
Hex Starting Offset 13221=0x33A5
FF 18– Surface and Ceiling 8
Hex Starting Offset 13223=0x33A7
01 1F- Surface 4 and Ceiling
Hex Starting Offset 13225=0x33A9
07 1F - Surface 4 and Ceiling 3
Hex Starting Offset 13227=0x33AB
0F 1F - Surface 4 and Ceiling 4
Hex Starting Offset 13229=0x33AD
81 1F - Surface 5 and Ceiling
Hex Starting Offset 13231=0x33AF
01 00 - Ceiling
Hex Starting Offset 13233=0x33B1
8F 1F - Surface 5 and Ceiling 4
Hex Starting Offset 13235=0x33B3
F1 1F – Surface 8 and Ceiling
Hex Starting Offset 13237=0x33B5
F9 18 – Surface and Ceiling and Middle 5
Hex Starting Offset 13239=0x33B7
F1 18 – Surface and Ceiling and Middle 4
Hex Starting Offset 13241=0x33B9
FF 1F – All
Advanced Hex digits
00 10 Shorter Surface (Must place sprite on floor)
00 1C Surface 3
0F 00 Ceiling 3
FF 00 Ceiling 8
8F 18 Surface and Ceiling 4 and Middle 1
00 1F Surface 5
Height for ? coin block Vertical 3.
14686=0x395E
Original Offset 03
Height for ? coin block Vertical 7.
14689=0x3961
Original Offset 07
Height for Bridge V=7.
14703=0x396F
Original Offset 06
Height for Bridge V=8.
14706=0x3972
Original Offset 07
Height for Bridge V=10.
14709=0x3975
Original Offset 09
Make any tiles behave like their other tiles
NOTE: Not all of them are here
Clouds (Surface)
13382=0x3446
Original Offset 88
Island Block (Left)
14184=0x3768
Original Offset 16
Island Block (Center)
14191=0x376F
Original Offset 17
Island Tree Tile
14196=0x3774
Original Offset 4C
Island Block (Right)
14201=0x3779
Original Offset 18
Cloud Block (Left)
14220=0x378C
Original Offset 8A
Cloud Block (Right)
14225=0x3791
Original Offset 8C
Cloud Block (Center)
14239=0x379F
Original Offset 8B
? Coin (For Length)
14697=0x3969
Original Offset C0
Bridge Block Behaviour
14717=0x397D
Original Offset 0B
Bridge Block Behaviour (Bottom)
14725=0x3985
Original Offset 64
Vertical Balls Behaviour
14735=0x398F
Original Offset 6F
Flagpole Sphere
14740=0x3994
Original Offset 21
Flag String Behaviour
14749=0x399D
Original Offset 22
Block (For Flagpole)
14754=0x39A2
Original Offset 62
Sea Vertical Seaplant Block
14878=0x3A1E
Original Offset 1F
Ground Brick Block
14879=0x3A1F
Original Offset 4F
Underground Brick Block
14880=0x3A20
Original Offset 50
Castle Brick Block
14881=0x3A21
Original Offset 50
Cloud Horizontal block
14882=0x3A22
Original Offset 88
Horizontal/Vertical Block (All attributes)
14874=0x3A1A
Original Offsets 6A 62 62 63
Bullet Bill Cannon
14948=0x3A64
Original Offset 65
Bullet Bill Cannon (Middle)
14957=0x3A6D
Original Offset 66
Bullet Bill Cannon (Bottom)
14966=0x3A76
Original Offset 67
Blocks (For Steps)
15044=0x3AC4
Original Offset 62
Which Object 0-B tile behave like other tiles
Offsets from 19305=0x4B69 to 19317=0x4B75
Original Offsets 52 53 54 55 56 57 58 59 5A 5B 5C 5D
Misc. Data
Attribute Level Palette
9929=0x26C9
Original Offsets 01 02 03 04
Pixel Shining Object Count
10939=0x2ABB
Original Offset 06
Putting FF creates an anonyous shine.
Level Room Enabler
20428=0x4FCC
Original Offset CD 5F 07 D0 0E
Changed Offset EA EA EA EA EA
Ignores level Pointers when you set it like this.
Surfing Platform Speed
25648=0x6430
Original Offset 10
Hex Offsets
00 does not move
3F Fast
4F Super Fast (May screw up background screen)
7F really fast (May screw up background screen)
80 really fast (Backwards)
F0 Move backwards (Normal Speed)
Halfway pages
12715=0x31AB
Original Offsets 66 60 88 60 66 70 77 60 D6 00 77 80 70 B0 00 00 00 00
6660 World 1
8860 World 2
7760 World 4
D600 World 5
7780 World 6
70B0 World 7
0000 World 8
0000 World 9
Halfway pages (For Worlds A-D)
48633=0xBDF9
Original Offsets 76 50 65 50 75 B0 00 00
7650 World A
6550 World B
75B0 World C
0000 World D
Much easier to understand. Each level is a byte
11223344
11 22
Byte 1
33 44
Byte 2
Edit Castle looping (Level)
19957=0x4DF5
Original Offsets 02 02 02 02 05 05 05 05 06 07 07 04
Changes the level of a loop command
Edit Castle looping (Page Frame)
19969=0x4E01
Original Offsets 03 05 08 09 03 06 07 0A 05 05 0B 05
Changes the Page level of a loop command
Edit Castle looping (Vertical Position)
19981=0x4E0D
Original Offsets B0 B0 40 30 B0 30 B0 B0 F0 F0 B0 F0
Changes the Vertical position of a loop command. Must stay in that position. World 8-4 is an example of the loop where the long fire-bar is.
Offset of page map skip data
34102=0x8536
Original Offsets 0C 0C 42 42 10 10 30 30 06 0C 54 06
Changes the offset for the looping.
NOTE: This is untested
Continuous loop 1
30593=0x7781
Original Offset 02
Changes the loop of a World
NOTE: This is untested
Continuous loop 2
30622=0x779E
Original Offset 05
Changes the loop of a World
NOTE: This is untested. However this may NOT be the right offset.
Editing loop commands is much harder than it looks. Only some specific information like AP’s SMB hacks explain more about editing loops.
World Pointers
34053=0x8505
Original Offset 00 05 09 0E 12 17 1C 20 24
This is kinda fun but it allows the number of levels to load for each world. Works for Warpzones as well.
00 World 1-1
05 World 2-1
09 World 3-1
0E World 4-1
12 World 5-1
17 World 6-1
1C World 7-1
20 World 8-1
24 World 9-1
Note: This will only work if the World is being loaded correctly in certain Worlds. Putting this hex 12 in World 1-1 WILL NOT WORK. This kind of procedure can only work in Super Mario all-stars.
For Worlds A-D
48514=0xBD82
Original Offsets: 00 05 0A 0E
Shooting Program 1
28702= 0x701E
Original Offset 1C
Changed Offset 0D
Shoots Upward
Shooting Program 2
28717= 0x702D
Original Offset FD
Changes the direction of the fireball clockwise. Inserting the Hex 00 will shoot straight fireballs. Low accuracy. Requires Shooting Program 1 Hex 0D for this. Enter this hex alone will not let the fireballs bounce.
Shooting Program 3
28726=0x7036
Original Offset 29 F8
Changed Offset 09 0F
Changes the direction of the fireball vertically, I think. Using in combination of 0D, FF, and 09 0F on all 3 shooting programs will allow Mario to shoot straight fireballs with perfect aiming.
Need a Table file click here?
Text Hex offsets
35042=0x88E2
Text name: @1986 NINTENDO
14 Characters
35059=0x88F3
Text name: MARIO GAME
10 Characters
35072=0x8900
Text name: LUIGI GAME
10 Characters
45693=0xB27D
Text name: MARIO (Ditto)
5 Characters
45698=0xB282
Text name: LUIGI (Ditto)
5 Characters
45765=0xB2C5
Text name: Thank you Mario! (or LUIGI)
16 Characters
45789=0xB2DD
Text name: Peace is Paved
14 Characters
45811=0xB2F3
Text name: With kingdom saved
18 Characters
45833=0xB309
Text name: Hurrah to Mario
16 Characters
45853=0xB31D
Text name: Our only hero
13 Characters
45870=0xB32E
Text name: This ends your trip
19 Characters
45893=0xB345
Text name: Of a long friendship
20 Characters
45917=0xB35D
Text name: 100000 PTS. ADDED
17 Characters
45931=0xB375
Text name: FOR EACH PLAYER LEFT.
21 Characters
45999=0xB3AF
Text name: WE PRESENT YOU FANTASY WORLD
24 Characters
46026=0xB3CA
Text name: LET’S TRY "9 WORLD"
19 Characters
46048=0xB3E0
Text name: WITH ONE GAME.
14 Characters
46074=0xB3FA
Text name: YOU’RE A SUPER PLAYER
22 Characters
46099=0xB413
Text name: WE HOPE WE
10 Characters
46115=0xB423
Text name: SEE YOU AGAIN.
14 Characters
46132=0xB434
Text name: MARIO AND STAFF
16 Characters
10283=0x282B
Text name: WORLD TIME (Status Bar)
11 Characters
10324=0x2854
Text name: WORLD (On the World 1-1 ect screen)
5 Characters
10345=0x2869
Text name: TIME UP
7 Characters
10356=2874
Text name: GAME OVER
9 Characters
10368=0x2880
Text name: CONTINUE
8 Characters
10383=0x288F
Text name: RETRY
5 Characters
10392=0x2898
Text name: WELCOME TO WARP ZONE
21 Characters
11758=0x2DEE
Text name: Thank you Mario! (or LUIGI if edited)
16 Characters
11778=0x2E02
Text name: BUT OUR PRINCESS IS IN
22 Characters
11803=0x2E1B
Text name: ANOTHER CASTLE
15 Characters
Enemy Pointer Data
This is the data where the pointers came from which is programmed to send enemies from one room to another room.
In this game, there are 2 bytes to edit the data.
Sprite listing Attribute Pointers
34114=0x8542 Room 00 Hex 2C
34115=0x8543 Room 20 Hex 0A
34116=0x8544 Room 40 Hex 27
34117=0x8545 Room 60 Hex 00
Sprite listing ROOM Pointers
34118=0x8546 Room 60 Hex 90 C7 (World 1-4)
34120=0x8548 Room 61 Hex AF C7
34122=0x854A Room 62 Hex D6 C7
34124=0x854C Room 63 Hex E9 C7
34126=0x854E Room 64 Hex D0 C5 (World 5-4)
34128=0x8550 Room 65 Hex 09 C6
34130=0x8552 Room 66 Hex 30 C6
34132=0x8554 Room 67 Hex 6F C6
34134=0x8556 Room 68 Hex 80 CA (World 9-3)
34136=0x8558 Room 69 Hex 8A CA
34138=0x855A Room 20 Hex 1E C8 (World 1-1)
34140=0x855C Room 21 Hex 44 C8
34142=0x855E Room 22 Hex 67 C8
34144=0x8560 Room 23 Hex 90 C8
34146=0x8562 Room 24 Hex C6 C8
34148=0x8564 Room 25 Hex DD C8
34150=0x8566 Room 26 Hex 07 C9
34152=0x8568 Room 27 Hex 2C C9
34154=0x856A Room 28 Hex 43 C9
34156=0x856C Room 29 Hex 60 C2 (Pipe Intro)
34158=0x856E Room 2A Hex 65 C9
34160=0x8570 Room 2B Hex AF C6 (World 5-1)
34162=0x8572 Room 2C Hex E0 C6
34164=0x8574 Room 2D Hex 08 C7
34166=0x8576 Room 2E Hex 2C C7
34168=0x8578 Room 2F Hex 49 C7
34170=0x857A Room 30 Hex 7A C7
34172=0x857C Room 31 Hex A6 C7
34174=0x857E Room 32 Hex BF C7
34176=0x8580 Room 33 Hex 88 C9 (Cloud Bonus Area Worlds 1 through 4)
34178=0x8582 Room 34 Hex 60 C2 (Overworld Warp Zone)
34180=0x8584 Room 35 Hex E7 C7
34182=0x8586 Room 36 Hex 0A C8
34184=0x8588 Room 37 Hex 31 C8
34186=0x858A Room 38 Hex 90 CA (World 9-1)
34188=0x858C Room 39 Hex 94 CA
34190=0x858E Room 3A Hex 94 CA
34192=0x8590 Room 3B Hex 60 C2 (Overworld Ending)
34194=0x8592 Room 3C Hex 32 C8 (Cloud Bonus Area Worlds 5 through 8)
34196=0x8594 Room 40 Hex 94 C9 (World 1-2)
34198=0x8596 Room 41 Hex BA C9
34200=0x8598 Room 42 Hex C4 C9
34202=0x859A Room 43 Hex 3B C8 (World 5-2)
34204=0x859C Room 44 Hex 5C C8
34206=0x859E Room 00 Hex DE C9 (World 3-2)
34208=0x85A0 Room 01 Hex 76 C8 (World 6-2)
34210=0x85A2 Room 02 Hex 04 CA (World 4-1 Bonus)
34212=0x85A4 Room 03 Hex A6 C8 (World 8-4, Water Part)
34214=0x85A6 Room 04 Hex B4 C8
34216=0x85A8 Room 05 Hex 94 CA (World 9-1, Water Part)
34218=0x85AA Room 06 Hex B5 CA
34220=0x85AC Room 07 Hex BA CA
Sprite listing Attribute Pointers For Worlds A-D
48541=0xBD9D Room 00 Hex 14
48542=0xBD9E Room 20 Hex 04
48543=0xBD9F Room 40 Hex 12
48544=0xBDA0 Room 60 Hex 00
Sprite listing ROOM Pointers
46545=0xBDA1 Room 60 Hex D0 C5 (World A-4)
46547=0xBDA3 Room 61 Hex F5 C5
46549=0xBDA5 Room 62 Hex 1C C6
46551=0xBDA7 Room 63 Hex 5D C6
46553=0xBDA9 Room 20 Hex 8C C6 (World A-1)
46555=0xBDAB Room 21 Hex C7 C6
46557=0xBDAD Room 22 Hex D6 C6
46559=0xBDAF Room 23 Hex 04 C7
46561=0xBDB1 Room 24 Hex 29 C7
46563=0xBDB3 Room 25 Hex 4C C7
46565=0xBDB5 Room 26 Hex 6B C7
46567=0xBDB7 Room 27 Hex 8A C7
46559=0xBDB9 Room 28 Hex AA C7
46561=0xBDBB Room 29 Hex CB C7
46563=0xBDBD Room 2A Hex E2 C7 (World D-4 Overworld Part)
46565=0xBDBF Room 2B Hex F2 C7 (Cloud Bonus Area)
46567=0xBDC1 Room 2C Hex 60 C2 (Pipe Intro)
46569=0xBDC3 Room 2D Hex 60 C2 (Overworld Ending)
46571=0xBDC5 Room 40 Hex 01 C8 (World A-2)
46573=0xBDC7 Room 41 Hex 1B C8
46575=0xBDC9 Room 00 Hex 2F C8 (World B-2)
Object level Pointer Data
This is the data where the pointers came from which is programmed to send objects from one room to another room.
Object listing Attribute Pointers
34222=0x85AE Room 00 Hex 2C
34223=0x85AF Room 20 Hex 0A
34224=0x85B0 Room 40 Hex 27
34225=0x85B1 Room 60 Hex 00
Object listing ROOM pointers
34226=0x85B2 Room 60 Hex 14 CA (World 1-4)
34228=0x85B4 Room 61 Hex 73 CA
34230=0x85B6 Room 62 Hex FE CA
34232=0x85B8 Room 63 Hex 95 CB
34234=0x85BA Room 64 Hex C9 C8 (World 5-4)
34236=0x85BC Room 65 Hex 96 C9
34238=0x85BE Room 66 Hex 25 CA
34240=0x85C0 Room 67 Hex B8 CA
34242=0x85C2 Room 68 Hex CB CA (World 9-3)
34244=0x85C4 Room 69 Hex 2E CB
34246=0x85C6 Room 20 Hex 0A CC (World 1-1)
34248=0x85C8 Room 21 Hex 65 CC
34250=0x85CA Room 22 Hex B4 CC
34252=0x85CC Room 23 Hex 2D CD
34254=0x85CE Room 24 Hex AA CD
34256=0x85D0 Room 25 Hex 09 CE
34258=0x85D2 Room 26 Hex 88 CE
34260=0x85D4 Room 27 Hex E7 CE
34262=0x85D6 Room 28 Hex 5E CF
34264=0x85D8 Room 29 Hex 74 C2 (Pipe Intro)
34266=0x85DA Room 2A Hex BF CF
34268=0x85DC Room 2B Hex 8F CB (World 5-1)
34270=0x85DE Room 2C Hex 30 CC
34272=0x85E0 Room 2D Hex 8F CC
34274=0x85E2 Room 2E Hex 0E CD
34276=0x85E4 Room 2F Hex 7B CD
34278=0x85E6 Room 30 Hex FE CD
34280=0x85E8 Room 31 Hex 5B CE
34282=0x85EA Room 32 Hex D6 CE
34284=0x85EC Room 33 Hex 08 D0 (Cloud Bonus Area Worlds 1 through 4)
34286=0x85EE Room 34 Hex 7D C2 (Overworld Warp Zone)
34288=0x85F0 Room 35 Hex 4B CF
34290=0x85F2 Room 36 Hex B6 CF
34292=0x85F4 Room 37 Hex 1A D0
34294=0x85F6 Room 38 Hex 3F CB (World 9-1)
34296=0x85F8 Room 39 Hex 4E CB
34298=0x85FA Room 3A Hex 4F CB
34300=0x85FC Room 3B Hex 61 C2 (Overworld Ending)
34302=0x85FE Room 3C Hex 1B D0 (Cloud Bonus Area Worlds 5 through 8)
34304=0x8600 Room 40 Hex 21 D0 (World 1-2)
34306=0x8602 Room 41 Hex E2 D0
34308=0x8604 Room 42 Hex 1D D1
34310=0x8606 Room 43 Hex 52 D0 (World 5-2)
34312=0x8608 Room 44 Hex 1F D1
34314=0x860A Room 00 Hex 68 D1 (World 3-2)
34316=0x860C Room 01 Hex 60 D1 (World 6-2)
34318=0x860E Room 02 Hex 1B D2 (World 4-1 Bonus)
34320=0x8610 Room 03 Hex 29 D2 (World 8-4, Water Part)
34322=0x8612 Room 04 Hex 42 D2
34324=0x8614 Room 05 Hex 50 CB (World 9-1, Water Part)
34326=0x8616 Room 06 Hex 97 CB
34328=0x8618 Room 07 Hex DA CB
Frequently Asked Questions (FAQ)
Q. Where's the rest of the levels like World A?
A. The extra levels are not accessible from within the standard 0x80 level pointers. However, the actual address locations in the ROM of these extra levels are known. Check the list given in the Level Offset List. Modifying these levels will require saving them to an unused level number in the standard 0x80 levels, and then manually repairing the necessary pointer with a hex editor.
In these cases, you need to collect 8 stars in order to play World A to see if those unused levels are been modified. But in Super Mario all-stars, those extra overworld levels can’t be modified either by standard.
Q. Why do certain levels only load in certain Worlds while others don’t?
A. Because the data is completely different than the original SMB1. Objects like Upside down pipes or having a Red Piranha Plant in World 1 requires World 5, 9 or A function to edit them. This includes the pointers themselves. Obiviously it’s impossible to find that kind of data where you find World 1 and switch them to World 5. Otherwise the level offsets can never be the same.
Super Mario Bros. The Lost Levels can now have the power to place Upside down pipes in World 1 and such except for Overworld Level Pointers. While editing the Non-Overworld Pointers, you have to switch the hex pointers in your level properly.
Q. OK, where’s the Minus World
A. The procedure has been removed since SMB1. Now the warp pipes acts like normal pipes in SMB2J.
Q. How do I change the level attributes
A. You can’t. Not by a Non-Level editor if you try to edit your level. This kind of data is too complex to do it. You have to change part of the level, music, the effects, pointers, etc. to get the attributes of the level. In other words, you have to trade object level pointers in your rooms.
Q. How do I delete Objects/Sprites?
A. If you’re not using a level or sprite pointer put FF at the end of the sprite’s hex number and FD for object’s hex number.
Q. Can you find more data for me?
A. I could and if I’m only gonna feel like it. However I’m still waiting for Kernel Software to translate the SMB Remodeler to English so I could find the enemy attributes and others. What’s bothering me is that I still can’t find the data with the Green Springboards and the Red Piranha Plants and such other existing data for SMB2J.
Q. Where can I get the SMB2J ROM?
A. Check your ego at the door. Insectduel’s Domain does not come with ROMs, and never will.
Copyright 2006 Insectduel. Reproduction of this document is forbidden. Contact me if I’m wrong. Some offsets came from the original Hex Offset list Crazy Hex Strings.